package rpcx_label_center

import (
	"time"

	"github.com/qida/gohp/timex"
)

// TODO
// 子订阅表，状态
const (
	StatusRecSubscribe删除     = -10
	StatusRecSubscribe暂停     = -1
	StatusRecSubscribe新创建未发送 = 10
	StatusRecSubscribe新创建已过期 = 20
	StatusRecSubscribe请求推流失败 = 30
	StatusRecSubscribe请求推流成功 = 40
	StatusRecSubscribe抽图进行中  = 50
	StatusRecSubscribe抽图已完成  = 60
)

// 子订阅任务记录

// 子订阅 删除 请求
type ReqDeleteRecSubscribe struct {
	IdSubscribe int64 `json:"IdSubscribe"` //Id(雪花)

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 子订阅 获取列表 请求
type ReqListRecSubscribe struct {
	IdSubscribe int64 `json:"IdSubscribe"` //订阅Id

	Page        int64    `json:"Page"`                  //必填 指定返回页码号
	Limit       int64    `json:"Limit"`                 //必填 指定返回每页条数
	FieldOrders []string `json:"FieldOrders,omitempty"` //指定要排序的字段数组，默认升序，降序加前缀-，如 ["-Id", "Name"] 按Id降序Name升序排列

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 子订阅 修改 请求
type ReqUpdateRecSubscribe struct {
	IdRecSubscribe int64  `json:"IdRecSubscribe"` //Id(雪花)
	IdSubscribe    int64  `json:"IdSubscribe"`    //订阅Id
	SubscribeName  string `json:"SubscribeName"`  //订阅名称
	TypeSubscribe  int8   `json:"TypeSubscribe"`  //是否为历史调阅 历史=1 实时=2

	IdRecSchemes  []string  `json:"IdRecSchemes"`  //AI分析方案Id
	DateTimeStart time.Time `json:"DateTimeStart"` //开始日期
	DateTimeEnd   time.Time `json:"DateTimeEnd"`   //结束日期

	ImageRate int `json:"ImageRate"` //抽图频率，每张毫秒数

	Status int8 `json:"Status"` //状态 正常=10 禁用=-1

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 子订阅 查询 请求
type ReqSearchRecSubscribe struct {
	KeyWord        string    `json:"KeyWord,omitempty"` //全局关键词
	IdRecSubscribe int64     `json:"IdRecSubscribe"`    //Id(雪花)
	IdSubscribe    int64     `json:"IdSubscribe"`       //订阅Id
	TypeSubscribe  int8      `json:"TypeSubscribe"`     //订阅类型 1:历史 2:实时
	Status         int8      `json:"Status"`            //状态 正常=10 禁用=-1
	TimeCreate     time.Time `json:"TimeCreate"`        //记录创建时间
	TimeUpdate     time.Time `json:"TimeUpdate"`        //最后修改时间
	TimeDelete     time.Time `json:"TimeDelete"`        //删除时间

	Page        int64    `json:"Page"`                  //必填 指定返回页码号
	Limit       int64    `json:"Limit"`                 //必填 指定返回每页条数
	FieldOrders []string `json:"FieldOrders,omitempty"` //指定要排序的字段数组，默认升序，降序加前缀-，如 ["-Id", "Name"] 按Id降序Name升序排列

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 子订阅 单记录对象 请求
type ReqRecSubscribeId struct {
	IdRecSubscribe int64 `json:"IdRecSubscribe"` //Id(雪花)

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 子订阅 查询流列表 请求
type ReqListStreamsRecSubscribe struct {
	DeviceId string `json:"DeviceId"` //国标Id集

	Page        int64    `json:"Page"`                  //不必填，指定返回页码号
	Limit       int64    `json:"Limit"`                 //不必填，指定返回每页条数
	FieldOrders []string `json:"FieldOrders,omitempty"` //不必填，指定要排序的字段数组，默认升序，降序加前缀-，如 ["-Id", "Name"] 按Id降序Name升序排列

	Log Log `json:"Log,omitempty"` //追踪日志
}
type RespRecSubscribe struct {
	IdRecSubscribe int64     `json:"IdRecSubscribe"` //Id(雪花)
	IdSubscribe    int64     `json:"IdSubscribe"`    //订阅Id
	DeviceId       string    `json:"DeviceId"`       //国标Id
	TypeSubscribe  int8      `json:"TypeSubscribe"`  //订阅类型 1:历史 2:实时
	DateTimeStart  time.Time `json:"DateTimeStart"`  //开始日期
	DateTimeEnd    time.Time `json:"DateTimeEnd"`    //结束日期
	ImageRate      int       `json:"ImageRate"`      //抽图频率，每张毫秒数
	Status         int8      `json:"Status"`         //状态 正常=10 禁用=-1
	IdRecSchemes   []string  `json:"IdRecSchemes"`   //AI分析方案参数Id

	TimeCreate time.Time      `json:"TimeCreate"` //记录创建时间
	TimeUpdate timex.TimeNull `json:"TimeUpdate"` //最后修改时间
	TimeDelete timex.TimeNull `json:"TimeDelete"` //删除时间
}

// 响应 查询列表
type RespRecSubscribes struct {
	Total         int64              `json:"Total"`         //返回列表的总条数
	RecSubscribes []RespRecSubscribe `json:"RecSubscribes"` //返回列表对象
}
